pub fn dp_rec_mc(amount: u32) -> u32 {
    let mut f = vec![u32::MAX; amount as usize + 1];
    let c = [1, 2, 5, 10, 20, 30, 50, 100];

    f[0] = 0;

    for i in 0..=amount as usize {
        for v in c.iter() {
            if i < *v {
                continue;
            }
            f[i] = f[i].min(f[i - v] + 1);
        }
    }

    f[amount as usize]
}
